home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 June / EnigmA AMIGA RUN 08 (1996)(G.R. Edizioni)(IT)[!][issue 1996-06][EARSAN CD VII].iso / earcd / comm1 / s2mtr376.lha / SANA2Meter / Source / sana2meter.h < prev    next >
C/C++ Source or Header  |  1996-04-27  |  9KB  |  235 lines

  1. #ifndef _SANA2METER_H
  2. #define _SANA2METER_H
  3. /*
  4. ** $VER: sana2meter.h 1.0 (25 Apr 1996)
  5. **
  6. ** (C) Copyright 1996 Marius Gröger
  7. **     All Rights Reserved
  8. **
  9. ** $HISTORY:
  10. **
  11. ** 25 Mar 1996 : 001.000 :  created
  12. */
  13.  
  14. /*F*/ /* includes */
  15. #include <exec/libraries.h>
  16. #include <exec/devices.h>
  17. #include <exec/memory.h>
  18. #include <exec/io.h>
  19. #include <libraries/gadtools.h>
  20. #include <workbench/startup.h>
  21. #include <utility/tagitem.h>
  22. #include <netinclude:devices/sana2.h>
  23. #include "compiler.h"
  24. #include "SANA2Meter_rev.h"
  25. /*E*/
  26.  
  27. /*F*/ /* struct TrackType */
  28. struct TrackType
  29. {
  30.    ULONG                         tt_Type;
  31.    UBYTE                         tt_Label[30];
  32.    UBYTE                         tt_Key[12];
  33.    ULONG                         tt_Flags;
  34.    struct Sana2PacketTypeStats   tt_Stats;
  35. };
  36.  
  37. #define TTF_ACTIVE            (1<<0)
  38. #define TTF_TRACKED           (1<<1)
  39. #define TTF_INITIAL_OPACKETS  (1<<2)
  40. #define TTF_INITIAL_IPACKETS  (1<<3)
  41. #define TTF_INITIAL_OBYTES    (1<<4)
  42. #define TTF_INITIAL_IBYTES    (1<<5)
  43. #define TTF_INITIAL_DPACKETS  (1<<6)
  44. #define TTF_INITIAL_SETUP     (1<<7)
  45. /*E*/
  46. /*F*/ /* enum Member, struct NewWatch, struct Watch */
  47.  
  48. enum Member
  49. {
  50.    MEMBER_NONE,
  51.    MEMBER_DEVICEQUERY,
  52.    MEMBER_GLOBALSTATS,
  53.    MEMBER_SPECIALSTATS,
  54.    MEMBER_TRACKTYPE
  55. };
  56.  
  57. struct NewWatch
  58. {
  59.    enum Member    nw_Member;        /* classification */
  60.    STRPTR         nw_ShortKey;      /* abbreviated option keyword */
  61.    STRPTR         nw_Key;           /* option keyword */
  62.    LONG           nw_LabelID;       /* locale ID */
  63.    ULONG          nw_StructOffset;
  64.    ULONG          nw_Flags;         /* see WF_#? below */
  65. };
  66.  
  67. struct Watch
  68. {
  69.    struct MinNode          w_Link;
  70.    enum Member             w_Member;      /* copy of NewWatch */
  71.    STRPTR                  w_ShortKey;    /* abbreviated option keyword */
  72.    STRPTR                  w_Key;         /* copy of NewWatch */
  73.    struct TrackType     *  w_TrackType;   /* only if (w_Member == MEMBER_TRACKTYPE) */
  74.    STRPTR                  w_Label;       /* translated localeid */
  75.    ULONG                   w_Flags;       /* copy of NewWatch */
  76.    ULONG                   w_ID;          /* for GUI */
  77.    ULONG                *  w_Value;       /* pointer to monitored value */
  78. };
  79. #define WF_ACTIVE   (1<<0)
  80. #define WF_STATIC   (1<<1)
  81. #define WF_FIRSTTT  (1<<2)
  82. #define WF_NOLABEL  (1<<3)
  83. #define WF_OFF      (1<<4)
  84.  
  85. #define SCANWATCHES(w, list) for(w = (struct Watch*)((list)->mlh_Head); w->w_Link.mln_Succ; w=(struct Watch*)w->w_Link.mln_Succ)
  86.  
  87. /*E*/
  88. /*F*/ /* device management data structures */
  89.  
  90.    /* Global data structures that will be passed to other system components */
  91. struct PublicDevData
  92. {
  93.    struct IOSana2Req                pd_S2Req;
  94.    struct Sana2DeviceQuery          pd_S2DeviceQuery;
  95.    struct Sana2DeviceStats          pd_S2DeviceStats;
  96.    struct TrackType              *  pd_TrackedTypes;
  97.    struct Sana2SpecialStatHeader    pd_S2SpecialStats;
  98.    struct Sana2SpecialStatRecord    pd_S2SpecialStatRecs[1];
  99. };
  100.    /* Global data structures that will be used locally only */
  101. struct GlobalDevData
  102. {
  103.    struct MinNode                   gd_Link;
  104.    int                              gd_GetGlobalStats    : 1;
  105.    int                              gd_GetSpecialStats   : 1;
  106.    int                              gd_GetTrackType      : 1;
  107.    int                              gd_ShowDevQuery      : 1;
  108.    int                              gd_Force             : 1;
  109.    int                              gd_Active            : 1;
  110.    int                              gd_FromConfig        : 1;
  111.    LONG                             gd_Unit;
  112.    LONG                             gd_ValidSpecialStats;
  113.    struct MinList                   gd_Watches;
  114.    struct Watch                  *  gd_StdWatches;
  115.    ULONG                            gd_NumTT;
  116.    struct Watch                  *  gd_TrackWatches;
  117.    struct PublicDevData          *  gd_Public;
  118.    UBYTE                            gd_Title[36];
  119.    UBYTE                            gd_Device[1];  /* MUST be last member! */
  120. };
  121. #define SCANDEVS(d, list) for(d = (struct GlobalDevData*)((list)->mlh_Head); d->gd_Link.mln_Succ; d=(struct GlobalDevData*)d->gd_Link.mln_Succ)
  122.  
  123. /*E*/
  124. /*F*/ /* global storage anchor */
  125.  
  126. typedef struct PublicData
  127. {
  128.    struct timerequest               pd_TReq;
  129.    struct TTextAttr                 pd_Font;
  130.    UBYTE                            pd_Fontname[32];
  131.    UBYTE                            pd_Pubscreen[MAXPUBSCREENNAME];
  132.    UBYTE                            pd_Console[100];
  133. } *PD;
  134.  
  135.    /* Global data structures that will be used locally only */
  136. typedef struct GlobalData
  137. {
  138.    /* System related stuff */
  139.    struct Library                *  gd_SysBase,
  140.                                  *  gd_UtilityBase,
  141.                                  *  gd_GadToolsBase,
  142.                                  *  gd_GTLayoutBase,
  143.                                  *  gd_IntuitionBase,
  144.                                  *  gd_IconBase,
  145.                                  *  gd_DOSBase;
  146.    struct Task                   *  gd_We;
  147.    struct MsgPort                *  gd_S2Port;
  148.    struct MsgPort                *  gd_TPort;
  149.    void                          *  gd_AnyPool;
  150.    void                          *  gd_PubPool;
  151.    /* Timing related stuff */
  152.    struct timeval                   gd_time;
  153.    /* DOS/Arguments related stuff */
  154.    UBYTE                            gd_ProgramName[80];
  155.    ULONG                            gd_argc;
  156.    UBYTE                         ** gd_argv;
  157.    BPTR                             gd_Input;
  158.    BPTR                             gd_Output;
  159.    struct MsgPort                *  gd_OldConsoleTask;
  160.    BPTR                             gd_OldInput;
  161.    BPTR                             gd_OldOutput;
  162.    /* Locale related stuff */
  163.    struct LocaleInfo                gd_LocaleInfo;
  164.    /* Flags related to anything */
  165.    ULONG                            gd_Refresh;
  166.    int                              gd_CustomFont      : 1;
  167.    int                              gd_List            : 1;
  168.    int                              gd_CLI             : 1;
  169.    int                              gd_InputSelected   : 1;
  170.    int                              gd_OutputSelected  : 1;
  171.    int                              gd_CTSelected      : 1;
  172.    int                              gd_Inactive        : 1;
  173.    int                              gd_ToBack          : 1;
  174.    int                              gd_NeedTimer       : 1;
  175.    int                              gd_TimerOff        : 1;
  176.    /* Config related stuff */
  177.    int                              gd_HadRefresh      : 1;
  178.    int                              gd_HadLeft         : 1;
  179.    int                              gd_HadTop          : 1;
  180.    int                              gd_HadWindowToBack : 1;
  181.    int                              gd_HadFont         : 1;
  182.    int                              gd_HadInactive     : 1;
  183.    int                              gd_HadPubscreen    : 1;
  184.    STRPTR                           gd_ConfigName;
  185.    /* GUI related stuff */
  186.    struct LayoutHandle           *  gd_Handle;
  187.    struct NewMenu                *  gd_NewMenu;
  188.    struct NewMenu                *  gd_WatchStart;
  189.    struct NewMenu                *  gd_DevSelStart;
  190.    struct Menu                   *  gd_Menu;
  191.    WORD                             gd_Left;
  192.    WORD                             gd_Top;
  193.    /* structure extensions */
  194.    struct MinList                   gd_Devices;  /* List of GlobalDevData */
  195.    ULONG                            gd_NumDevices;
  196.    ULONG                            gd_NumActives;
  197.    PD                               gd_Public;
  198. } *GD;
  199.  
  200. #ifdef __SASC
  201.      /*
  202.      ** redirect all shared library bases to our device base.
  203.      */
  204. #  define SysBase       gd->gd_SysBase
  205. #  define GadToolsBase  gd->gd_GadToolsBase
  206. #  define GTLayoutBase  gd->gd_GTLayoutBase
  207. #  define DOSBase       gd->gd_DOSBase
  208. #  define UtilityBase   gd->gd_UtilityBase
  209. #  define LocaleBase    gd->gd_LocaleInfo.li_LocaleBase
  210. #  define IconBase      gd->gd_IconBase
  211. #  define IntuitionBase gd->gd_IntuitionBase
  212.      /*
  213.      ** This macro declares a local variable which temporary gets
  214.      ** SysBase directly from AbsExecBase.
  215.      */
  216. #  define LOCALSYSBASE struct { void *gd_SysBase; } *gd = (void*)0x4
  217. #else
  218. #  error Please define library bases for your compiler
  219. #endif
  220.  
  221. /*
  222. ** Pool settings
  223. */
  224. #define PUBPOOLKIND     (MEMF_PUBLIC|MEMF_CLEAR)
  225. #define PUBPOOLPUDDLE   (4*1024)
  226. #define PUBPOOLTHRESH   (3*1024)
  227. #define ANYPOOLKIND     (MEMF_ANY|MEMF_CLEAR)
  228. #define ANYPOOLPUDDLE   (4*1024)
  229. #define ANYPOOLTHRESH   (3*1024)
  230.  
  231. /*E*/
  232.  
  233. #endif
  234.  
  235.